﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using AcadPosApp.Utilidades;

namespace AcadPosApp.ControlarMatricula
{
    public partial class AproveitamentoDisciplinas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                carregarEstados();
                ddlEstadoPesquisa.SelectedValue = "1";
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
            }
        }

        private void carregarEstados()
        {
            ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
        }

        protected void ddlEstadoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlMatriculasAluno.Visible = false;
            gvwPesquisa.Visible = false;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = true;
            pnlMatriculasAluno.Visible = false;
            carregarAlunos();
        }



        private void carregarAlunos()
        {
            string pNome = TxtPesquisa.Text;
            int idEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNAluno.listarAlunosXEstado(pNome, idEstado);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }
        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaMatriculasAluno();
        }

        private void carregaMatriculasAluno()
        {
            pnlMatriculasAluno.Visible = true;
            Matricula matricula = new AcadPos.Entity.Matricula();
            matricula.MatriculaAluno = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
            gvwMatriculasAluno.DataSource = ControlClass.CNMatricula.listaMatriculasAluno(matricula);
            gvwMatriculasAluno.DataBind();
            gvwMatriculasAluno.SelectedIndex = -1;
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregarAlunos();
        }

        protected void gvwMatriculasAluno_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwMatriculasAluno.PageIndex = e.NewPageIndex;
            carregaMatriculasAluno();
        }

        protected void gvwMatriculasAluno_SelectedIndexChanged(object sender, EventArgs e)
        {
            //carregaFinanceiroMatricula();
            //pnlAcoes.Visible = true;
            //pnlFichaFinanceira.Visible = true;
            //pnlPesquisa.Enabled = false;
            pnlMatriculasAluno.Enabled = false;
            pnlPesquisa.Enabled = false;
            carreaDiscMatriculas();
        }

        private void carreaDiscMatriculas()
        {
            Turma turma = new Turma();
            turma.IdTurma = Convert.ToInt32(gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_TURMA"].ToString());
            int matricula = Convert.ToInt32(gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["MATRICULA"].ToString());
            pnlDisciplinasMatricula.Visible = true;
            gvwDiscMatricula.DataSource = ControlClass.CNDisciplina.listaDisciplinasAlunoProfessor(turma, matricula);
            gvwDiscMatricula.DataBind();
        }

        protected void gvwDiscMatricula_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvwDiscMatricula.EditIndex = -1;
            gvwDiscMatricula.SelectedIndex = -1;
            carreaDiscMatriculas();
        }

        protected void gvwDiscMatricula_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvwDiscMatricula.EditIndex = gvwDiscMatricula.SelectedIndex = e.NewEditIndex;
            carreaDiscMatriculas();

            GridViewRow gvrSelecionado = null;
            if (gvwDiscMatricula.EditIndex < gvwDiscMatricula.Rows.Count)
                gvrSelecionado = gvwDiscMatricula.Rows[gvwDiscMatricula.EditIndex];

            gvwDiscMatricula.SelectedRow.Cells[2].Focus();
        }

        protected void gvwDiscMatricula_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {

                decimal nota1 = 0;
                int falta1 = 0;
                int pID = Convert.ToInt32(gvwDiscMatricula.DataKeys[gvwDiscMatricula.EditIndex]["ID_MATRICULA_DISCIPLINA"].ToString());
                GridViewRow gvwSelecionado = gvwDiscMatricula.Rows[gvwDiscMatricula.EditIndex];
                if (!((TextBox)gvwSelecionado.FindControl("txtNota1")).Text.Equals(""))
                    nota1 = Convert.ToDecimal(((TextBox)gvwSelecionado.FindControl("txtNota1")).Text);
                if (!((TextBox)gvwSelecionado.FindControl("txtFalta1")).Text.Equals(""))
                    falta1 = int.Parse(((TextBox)gvwSelecionado.FindControl("txtFalta1")).Text);
                if (nota1 > 0 && nota1 <= 10)
                {
                    Disciplina disciplina = new Disciplina();
                    disciplina.Falta1 = falta1;
                    disciplina.Nota1 = nota1;
                    disciplina.IdMatriculaDisciplina = pID;

                    //Lançar Nota e Faltas
                    int idMatrizCurricular = Convert.ToInt32(gvwDiscMatricula.DataKeys[gvwDiscMatricula.EditIndex]["ID_MATRIZ_CURRICULAR"].ToString());
                    int idTurma = Convert.ToInt32(gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_TURMA"].ToString());
                    int matricula = Convert.ToInt32(gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["MATRICULA"].ToString());
                    int limiteFaltas = ControlClass.CNDisciplina.retornaLimiteFaltas(idMatrizCurricular);
                    if (falta1 <= limiteFaltas)
                    {
                        if (nota1 >= Convert.ToDecimal(Session["mediaInstituicao"].ToString()))
                        {
                            if (ControlClass.CNDisciplina.lancarNotaFalta(disciplina, idTurma, matricula))
                            {
                                if (gvwDiscMatricula.SelectedIndex < (gvwDiscMatricula.Rows.Count - 1))
                                {
                                    gvwDiscMatricula.EditIndex = gvwDiscMatricula.SelectedIndex += 1;
                                    gvwDiscMatricula_RowEditing(this, new GridViewEditEventArgs(gvwDiscMatricula.EditIndex));
                                }
                                else if (gvwDiscMatricula.SelectedIndex == (gvwDiscMatricula.Rows.Count - 1))
                                {
                                    gvwDiscMatricula.EditIndex = gvwDiscMatricula.SelectedIndex = -1;
                                    carreaDiscMatriculas();
                                }
                            }
                            else
                            {
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, "")), true);
                            }
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "A nota não atingiu a média necessária. O aproveitamento não pode ser realizado!")), true);
                        }
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "O limite de faltas foi excedido. O aproveitamento não pode ser realizado!")), true);
                    }
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "A nota deve está entre 0 e 10.")), true);
                }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlMatriculasAluno.Enabled = true;
            pnlPesquisa.Enabled = true;
            gvwMatriculasAluno.SelectedIndex = -1;
            pnlDisciplinasMatricula.Visible = false;
        }
    }
}